class KeyboardLayouts {
  static const Map<String, Map<KeyboardLayer, List<List<String>>>> layouts = {
    'en': {
      KeyboardLayer.alpha: [
        ['A', 'B', 'C', 'D', 'E', '⌫'],
        ['F', 'G', 'H', 'I', 'J', '123'],
        ['K', 'L', 'M', 'N', 'O', 'P'],
        ['Q', 'R', 'S', 'T', 'U'],
        ['V', 'W', 'X', 'Y', 'Z'],
      ],
      KeyboardLayer.numericExtra: [
        ['1', '2', '3', '&', '#', '⌫'],
        ['4', '5', '6', '(', ')', 'ABC'],
        ['7', '8', '9', '@', '!', '?'],
        ['0', '/', '\$', '%', '+', '[', ']'],
        ['.', '-', '_', '"', ':'],
        ['{', '}', '\\', '|', '~'],
        ['<', '>', '\$', '*', '=']
      ],
    },
    'es': {
      KeyboardLayer.alpha: [
        ['A', 'B', 'C', 'D', 'E', '⌫'],
        ['F', 'G', 'H', 'I', 'J', '123'],
        ['K', 'L', 'M', 'N', 'O', 'P'],
        ['Q', 'R', 'S', 'T', 'U'],
        ['V', 'W', 'X', 'Y', 'Z', 'Ñ'],
      ],
      KeyboardLayer.numericExtra: [
        ['1', '2', '3', '&', '#', '⌫'],
        ['4', '5', '6', '(', ')', 'ABC'],
        ['7', '8', '9', '@', '!', '?'],
        ['0', '/', '\$', '%', '+', '[', ']'],
        ['.', '-', '_', '"', ':'],
        ['{', '}', '\\', '|', '~'],
        ['<', '>', '\$', '*', '=']
      ],
    },
    'de': {
      KeyboardLayer.alpha: [
        ['A', 'B', 'C', 'D', 'E', '⌫'],
        ['F', 'G', 'H', 'I', 'J', '123'],
        ['K', 'L', 'M', 'N', 'O', 'P'],
        ['Q', 'R', 'S', 'T', 'U'],
        ['V', 'W', 'X', 'Y', 'Z'],
        ['Ä', 'Ö', 'Ü', 'ß']
      ],
      KeyboardLayer.numericExtra: [
        ['1', '2', '3', '&', '#', '⌫'],
        ['4', '5', '6', '(', ')', 'ABC'],
        ['7', '8', '9', '@', '!', '?'],
        ['0', '/', '\$', '%', '+', '[', ']'],
        ['.', '-', '_', '"', ':'],
        ['{', '}', '\\', '|', '~'],
        ['<', '>', '\$', '*', '=']
      ],
    },
    'fr': {
      KeyboardLayer.alpha: [
        ['A', 'B', 'C', 'D', 'E', '⌫'],
        ['F', 'G', 'H', 'I', 'J', '123'],
        ['K', 'L', 'M', 'N', 'O', 'P'],
        ['Q', 'R', 'S', 'T', 'U'],
        ['V', 'W', 'X', 'Y', 'Z'],
        ['É', 'È', 'À', 'Ç'],
        ['Â', 'Ê', 'Î', 'Ô', 'Û'],
      ],
      KeyboardLayer.numericExtra: [
        ['1', '2', '3', '&', '#', '⌫'],
        ['4', '5', '6', '(', ')', 'ABC'],
        ['7', '8', '9', '@', '!', '?'],
        ['0', '/', '\$', '%', '+', '[', ']'],
        ['.', '-', '_', '"', ':'],
        ['{', '}', '\\', '|', '~'],
        ['<', '>', '\$', '*', '=']
      ],
    },
    'ja': {
      KeyboardLayer.alpha: [
        ['あ', 'い', 'う', 'え', 'お', '⌫'],
        ['か', 'き', 'さ', 'し', 'す', '123'],
        ['せ', 'そ', 'た', 'ち', 'な', 'に'],
        ['ぬ', 'ね', 'の', 'は', 'ひ'],
        ['ふ', 'へ', 'ほ', 'ま', 'み'],
        ['む', 'も', 'や', 'ゆ', 'よ'],
      ],
      KeyboardLayer.numericExtra: [
        ['1', '2', '3', '4', '5', '⌫'],
        ['6', '7', '8', '9', '0', 'ABC'],
        ['!', '@', '#', '\$', '%'],
        ['^', '&', '*', '(', ')'],
        ['-', '_', '¥', '.', ','],
        ['{', '}', '\\', '|', '~'],
        ['<', '>', '\$', '*', '=']
      ],
    },
    'zh': {
      KeyboardLayer.alpha: [
        ['啊', '波', '从', '的', '饿', '⌫'],
        ['发', '个', '喝', '衣', '机', '123'],
        ['卡', '拉', '马', '呢', '哦', '啪'],
        ['期', '然', '色', '他', '乌'],
        ['为', '西', '行', '呀', '月', '子'],
      ],
      KeyboardLayer.numericExtra: [
        ['1', '2', '3', '4', '5', '⌫'],
        ['6', '7', '8', '9', '0', 'ABC'],
        ['!', '@', '#', '\$', '%'],
        ['^', '&', '*', '(', ')'],
        ['-', '_', '¥', '·', '…'],
        ['{', '}', '\\', '|', '~'],
        ['<', '>', '\$', '*', '=']
      ],
    },
  };
}

enum KeyboardLayer {
  alpha,
  numericExtra,
  numeric,
  email,
  domain,
}
